package 行为型模式.责任链模式;

/**
 * @Description 抽象处理者类
 * @Author shallow
 * @Date 2023/3/8 10:46
 */

public abstract class Handler {
    public final static int NUM_ONE =1;
    public final static int NUM_THREE =3;
    public final static int NUM_SEVEN =7;

    //该领导处理的请求天数区间
    private int numStart;
    private int numEnd;

    //声明上级领导
    private Handler nextHandler;

    public Handler(int numStart) {
        this.numStart = numStart;
    }

    public Handler(int numStart, int numEnd) {
        this.numStart = numStart;
        this.numEnd = numEnd;
    }

    //设置上级领导对象
    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }

    //各级领导处理请假条的方法
    protected  abstract void handleLeave(LeaveRequest leave);

    //权限不足，提交请假条给上级
    public final void submit(LeaveRequest leave){

        if(this.nextHandler!=null&&leave.getNum()>this.numEnd){
            //提交给上级领导处理
            this.nextHandler.submit(leave);
        }
        else{
            this.handleLeave(leave);
            System.out.println("流程结束！");
        }
    }
}
